/*
 *  Copyright [2012] Paulo de Tarso
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package revendedora.entidades;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Objects;
import javax.persistence.*;

/**
 *
 * @author Tarso
 */
@Entity
@Table(name="TB_HISTORICO_CAMPANHA",schema="REVENDAAVON")
public class HistoricoDeCampanhas implements Serializable, Comparable<HistoricoDeCampanhas>{
    private static final long serialVersionUID = -2991216833911217077L;
    
    @Id @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;
        
    @JoinColumn(name="CAMPANHA", nullable=false)
    private Campanha campanha;
    
    @Column(name="VALOR_TOT_CAMPANHA", nullable=false, precision=17, scale=2)
    private BigDecimal valorTotalCampanha;
    
    @Column(name="VALOR_DESC_PECENT", nullable=false, precision=17, scale=2)
    private BigDecimal valorComDescontoPercentual;
    
    @Column(name="PERCENTUAL_DESCTO", nullable=false, precision=3, scale=2)
    private Double percentualDeDesconto;

    @ManyToOne(optional=false)
    @JoinColumn(nullable=false, name="SUBREVENDEDORA")
    private SubRevendedoras subrevendedora;
    
    public HistoricoDeCampanhas() {
        this(0l, null, null, null, null, null);
    }

    public HistoricoDeCampanhas(Long id, Campanha campanha, BigDecimal valorTotalCampanha, BigDecimal valorComDescontoPercentual, Double percentualDeDesconto, SubRevendedoras subrevendedora) {
        this.id = id;
        this.campanha = campanha;
        this.valorTotalCampanha = valorTotalCampanha;
        this.valorComDescontoPercentual = valorComDescontoPercentual;
        this.percentualDeDesconto = percentualDeDesconto;
        this.subrevendedora = subrevendedora;
    }

    @Override
    public int compareTo(HistoricoDeCampanhas o) {
        return this.compareTo(o);
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final HistoricoDeCampanhas other = (HistoricoDeCampanhas) obj;
        if (!Objects.equals(this.id, other.id)) {
            return false;
        }
        if (!Objects.equals(this.campanha, other.campanha)) {
            return false;
        }
        if (!Objects.equals(this.valorTotalCampanha, other.valorTotalCampanha)) {
            return false;
        }
        if (!Objects.equals(this.valorComDescontoPercentual, other.valorComDescontoPercentual)) {
            return false;
        }
        if (!Objects.equals(this.percentualDeDesconto, other.percentualDeDesconto)) {
            return false;
        }
        if (!Objects.equals(this.subrevendedora, other.subrevendedora)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 83 * hash + Objects.hashCode(this.id);
        hash = 83 * hash + Objects.hashCode(this.campanha);
        hash = 83 * hash + Objects.hashCode(this.valorTotalCampanha);
        hash = 83 * hash + Objects.hashCode(this.valorComDescontoPercentual);
        hash = 83 * hash + Objects.hashCode(this.percentualDeDesconto);
        hash = 83 * hash + Objects.hashCode(this.subrevendedora);
        return hash;
    }

    @Override
    public String toString() {
        return "HistoricoDeCampanhas{" + "id=" + id + ", campanha=" + campanha + ", valorTotalCampanha=" + valorTotalCampanha + ", valorComDescontoPercentual=" + valorComDescontoPercentual + ", percentualDeDesconto=" + percentualDeDesconto + ", subrevendedora=" + subrevendedora + '}';
    }

    public Campanha getCampanha() {
        return campanha;
    }

    public void setCampanha(Campanha campanha) {
        this.campanha = campanha;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Double getPercentualDeDesconto() {
        return percentualDeDesconto;
    }

    public void setPercentualDeDesconto(Double percentualDeDesconto) {
        this.percentualDeDesconto = percentualDeDesconto;
    }

    public BigDecimal getValorComDescontoPercentual() {
        return valorComDescontoPercentual;
    }

    public void setValorComDescontoPercentual(BigDecimal valorComDescontoPercentual) {
        this.valorComDescontoPercentual = valorComDescontoPercentual;
    }

    public BigDecimal getValorTotalCampanha() {
        return valorTotalCampanha;
    }

    public void setValorTotalCampanha(BigDecimal valorTotalCampanha) {
        this.valorTotalCampanha = valorTotalCampanha;
    }

    public SubRevendedoras getSubrevendedora() {
        return subrevendedora;
    }

    public void setSubrevendedora(SubRevendedoras subrevendedora) {
        this.subrevendedora = subrevendedora;
    }
}